<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 父类构造函数
        function Father(name, age) {
            this.name = name;
            this.age = age;
        };
        // 父类中的方法
        Father.prototype.makeMoney = function() {
            console.log('挣钱');
        };
        // 子类构造函数
        function Son(name, age, height) {
            // 构造函数继承
            Father.call(this, name, age);
            this.height = height;
        };
        // 不能直接将Father的prototype赋值给son的prototype会导致影响父类的原型
        // Son.prototype = Father.prototype;
        // 可以使儿子拥有父类原型上的方法
        Son.prototype = new Father();
        // 由于Son的prototype上没有constructor构造函数指回Son
        Son.prototype.constructor = Son;

        // 添加子类的方法
        Son.prototype.spend = function() {
            console.log('花钱');
        };

        var father = new Father('小头爸爸', 30);
        var son = new Son('大头儿子', 5, 100);
        console.log(father);
        console.log(son);
        son.makeMoney();
        son.spend();
    </script>
</body>

</html>